#include <iostream> 
#include <set>
using namespace std;

struct angl{
	int w,h,are;
	angl(int a,int b):w(a),h(b){
		are = w*h;
	}
	bool operator < (const angl& p) const {
		if( this->are!=p.are ) return this->are < p.are;
		else if( min(w*1.0/h,h*1.0/w) != min(p.w*1.0/p.h,p.h*1.0/p.w))
			return min(w*1.0/h,h*1.0/w) > min(p.w*1.0/p.h,p.h*1.0/p.w);
		else return w < h;
	}
};
int main(){
	int n;
	cin >> n;
	multiset<angl> s;
	for(int i=0; i<n; i++){
		int v1,v2;
		cin >> v1 >> v2;
		s.insert(angl(v1,v2));
	}
	for(auto it=s.begin(); it!=s.end(); it++) cout << (*it).w << " " << (*it).h << " ";
	return 0;
}
